package org.huawei260.OD260;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Scanner;

/**
 * @Auther: qingle
 * @Date: 2024/8/22-2:12
 * @Description:
 *删除字符串中出现次数最少的字符
 *如果多个字符出现次数一样则都删除
 *
 * 这道题太基础，训练基本功
 * 我的思路：
 * 1.统计每个字符出现的次数
 * 用一个map来统计每个字符出现的次数
 * HashMap<Character, Integer> map = new HashMap<>();
 * map.put(c, map.getOrDefault(c, 0) + 1);
 * 2.找出出现次数最少的字符的数量 [可能遇到多个字符，用set装]
 * map.values() 最小的值对应的map是哪个
 * int min = Math.MAX_VALUE;
 * for (int count : charCountMap.values()) {
 * if (count < minCount) {
 * min = count;
 }
 *
 * 3.删除出现次数最少的字符
 * Stringbuilder sb = new Stringbuilder();
 * for(map.Entry<Character, Integer> entry : map.entrySet()) {
 * if (map.entrySet() != min) {
 * sb.append(entry);
 }
 *
 *
 * 重新进行拼接
 *
 * 4.返回删除后的字符串
 * return sb.toString() == "" ? "empty" : sb.toString();
 *
 *
 * @version: 1.0
 */
public class O0017_删除最少字符_moxie {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		String input = sc.nextLine();
		System.out.println(deleteLeastCharacters(input));
	}

	public static String deleteLeastCharacters(String s) {

		// 统计每个字符出现的次数
		Map<Character, Integer> map = new HashMap<>();
		for (int i = 0; i < s.length(); i++) {
			map.put(s.charAt(i), map.getOrDefault(s.charAt(i), 0) + 1);
		}

		// 找出出现次数最少的字符
		int min = s.length();
		for (int i = 0; i < s.length(); i++) {
			if(min > map.get(s.charAt(i))) {
				min = map.get(s.charAt(i));
			}
		}
//
//		// 统计每个字符出现的次数
//		for (char c : s.toCharArray()) {
//			map.put(c, map.getOrDefault(c, 0) + 1);
//		}
//
//		// 找出出现次数最少的字符
//		int min = s.length(); // 假设所有字符至少出现1次
//		for (int count : map.values()) {
//			if (count < min) {
//				min = count;
//			}
//		}


		// 创建一个包含所有出现次数最少的字符的集合
		StringBuilder sb = new StringBuilder();
		for (Map.Entry<Character, Integer> entry: map.entrySet()) {
			if (entry.getValue() == min) {
				sb.append(entry.getKey());
			}
		}

		// 删除出现次数最少的字符
		// 如果字符串map的entry中出现sb中的元素，则跳过
		StringBuilder res = new StringBuilder();
		for(Character c: s.toCharArray()) {
			if (!sb.toString().contains(c.toString())) {
				res.append(c);
			}
		}


		// 如果删除后字符串长度为0，则输出"empty"
		return res.toString() == "" ? "empty" : res.toString();
	}
}
